"""
腾讯会议各接口输出类定义
"""
from typing import List, Optional

from pydantic import BaseModel

from .base import OutputBase


class ReserveMeetingRoomInfo(BaseModel):
    # 企业已购买的虚拟会议室总数
    meeting_room_total: int

    # 已为用户分配的虚拟会议室个数
    meeting_room_reserved: int

    # 虚拟会议室已分配的用户数
    meeting_room_users_count: int

    # 虚拟会议室剩余的个数
    meeting_room_left: int

    # 虚拟会议室资源类型。
    # 虚拟会议室资源类型有：50、100、300、500、1000、2000，依赖所购买资源的情况。
    resource_type: int


class ReserveMeetingRoomUser(BaseModel):
    # 企业成员 ID
    userid: str

    # 成员名称
    user_name: str

    # 预留的虚拟会议室个数
    meeting_room_count: int

    # 虚拟会议室状态：
    # 1: 可发起会议
    # 2: 不可发起会议
    meeting_room_status: int

    # 虚拟会议室资源类型。
    # 虚拟会议室资源类型有：50、100、300、500、1000、2000，依赖所购买资源的情况
    resource_type: int


class ReserveMeetingRoomDepartment(BaseModel):

    # 企业部门 ID
    department_id: str

    # 部门名称
    department_name: str

    # 预留的虚拟会议室个数
    meeting_room_count: int

    # 虚拟会议室状态：
    # 1: 可发起会议
    # 2: 不可发起会议
    meeting_room_status: int

    # 虚拟会议室资源类型。
    # 虚拟会议室资源类型有：50、100、300、500、1000、2000，依赖所购买资源的情况。
    resource_type: int


class ListReserveMeetingRoomUserData(BaseModel):
    # 当前页, 没有数据时为None
    current_page: Optional[int] = None

    # 当前页实际大小, 没有数据时为None
    current_size: Optional[int] = None

    # 数据总条数, 没有数据时为 0
    total_count: int

    # 数据总页数, 没有数据时为None
    total_page: Optional[int] = None

    # 企业下虚拟会议室资源列表
    meeting_room_info_list: Optional[List[ReserveMeetingRoomInfo]] = None

    # 成员对象列表。
    # 由于虚拟会议室资源的类型不同，可能会出现同一个企业成员 ID 对应多个虚拟会议室资源的情况。
    meeting_room_users: Optional[List[ReserveMeetingRoomUser]] = None

    # 部门对象列表
    meeting_room_departments: Optional[List[ReserveMeetingRoomDepartment]] = None


class ListReserveMeetingRoomUserOutput(OutputBase):
    data: Optional[ListReserveMeetingRoomUserData]
